// 引入配置
import { APP_BASE_URL } from '../config'
// 引入pinia
import store from '../store'

// 此vm参数为页面的实例，可以通过它引用vuex中的变量
export const Request = (vm) => {
  // 初始化请求配置
  uni.$uv.http.setConfig((config) => {
    /* config 为默认全局配置*/
    config.baseURL = APP_BASE_URL /* 根域名 */
    return config
  })

  // 请求拦截
  uni.$uv.http.interceptors.request.use((config) => { // 可使用async await 做异步操作
    // 初始化请求拦截器时，会执行此方法，此时data为undefined，赋予默认{}
    config.data = config.data || {}
    // 添加对应的请求头
    config.header['Authorization'] = 'Bearer ' + uni.getStorageSync('token')
		
    // 自定义参数
    // const custom = config?.custom
		
    return config
  }, config => { // 可使用async await 做异步操作
    return Promise.reject(config)
  })

  // 响应拦截
  uni.$uv.http.interceptors.response.use((response) => {
    /* 对响应成功做点什么 可使用async await 做异步操作*/
    const res = response.data

    // 自定义参数
    // const custom = response.config?.custom
    if (res.code === 402) {
      store('user').setAuthType('smsLogin')
    }
    return res || {}
  }, (response) => {
    // 对响应错误做点什么 （statusCode !== 200）
    return Promise.reject(response)
  })
}
